/*******************************************************************************
*	                           bsp cpu.c
*******************************************************************************/
#include "bsp.h"
#include "pincfg.h"
#include "swiic.h"


/*端口位定义*/
#define SDA_OUT1()		sda.en()
#define SDA_OUT0()		sda.dis()
#define SDA_ST()		sda.in_st()
#define SCL_OUT1()		scl.en()
#define SCL_OUT0()		scl.dis()

#define IIC_SCL_OUT()   scl.dir_out_pp()
#define IIC_SDA_OUT()   sda.dir_out_pp()
#define IIC_SDA_IN()    sda.dir_in_up()

/*
 * 硬件管脚配置
 */

static void iic_sda_out_high(void)
{
	SDA_OUT1();
}

static void iic_sda_out_low(void)
{
	SDA_OUT0();
}

static void iic_scl_out_high(void)
{
	SCL_OUT1();
}

static void iic_scl_out_low(void)
{
	SCL_OUT0();
}

static void iic_scl_out_mode(void)
{
	IIC_SCL_OUT();
}

static void iic_sda_out_mode(void)
{
	IIC_SDA_OUT();
}

static void iic_sda_in_mode(void)
{
	IIC_SDA_IN();
}

static uint8_t iic_sda_st_get(void)
{
	return SDA_ST();
}

swiic_cfg_type bsp_sw_iic =
{
	iic_sda_out_high,
	iic_sda_out_low,
	iic_scl_out_high,
	iic_scl_out_low,
	iic_scl_out_mode,
	iic_sda_out_mode,
	iic_sda_in_mode,
	iic_sda_st_get,
};

/*******************************************************************************
* iic fun
*******************************************************************************/
void bsp_iic_send_only(char *dat, char len)
{
	sw_iic_start(&bsp_sw_iic);

	while (len--)
	{
		sw_iic_send_byte(&bsp_sw_iic, *dat++);
	}
	sw_iic_stop(&bsp_sw_iic);
}

